704.二分法
https://leetcode.com/problems/binary-search/description/?envType=list&envId=pgm5myyh
class Solution {
public int search(int[] nums, int target) {
if(nums.length==1 && nums[0]==target){
return 0;
}
int left = 0;
int right = nums.length;
while(right > left){
int mid = (left+right)/2;
if(nums[mid] > target){
right = mid;
}else if(nums[mid] < target){
left = mid+1;
}else{
return mid;
}
}
return -1;
}
}
需注意以下
1.right的界線位置
如使用
int right = nums.length-1;
會導致nums少遍歷幾個元素
2.nums.length==1需另外處理
因left及right會相等,無法進入while迴圈處理
27.移除元素
https://leetcode.com/problems/remove-element/description/?envType=list&envId=pgm5myyh
class Solution {
public int removeElement(int[] nums, int val) {
int slow=0;
for(int fast=0;fast<nums.length;fast++){
if(nums[fast]!=val){
nums[slow]=nums[fast];
slow++;
}
}
return slow;
}
}
解題概念:
使用快慢指針,當快指針位置不等於val,便讓nums[slow]=快指針位置,以及slow++。